package org.cloud.core.common.anno;

import lombok.Getter;

import java.lang.annotation.*;

/**
 * 在需要打印操作日志的方法上标注此注解，对性能有一定影响，推荐只在重要地方使用
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface PrintLog {

    /**
     * 操作模块
     */
    String operaModule();

    /**
     * 操作类型
     */
    OperaType operaType();

    /**
     * 操作说明
     */
    String operaDesc() default "";

    /**
     * 是否打印入参
     */
    boolean printParams() default false;

    /**
     * 是否打印返回值
     */
    boolean printReturn() default false;

    @Getter
    enum OperaType {
        SELECT("查询"),
        INSERT("插入"),
        UPDATE("更新"),
        DELETE("删除");
        
        private final String value;

        OperaType(String value) {
            this.value = value;
        }
    }
}
